package com.iluwatar;

/**
 * 这是个模板类，定义了算法的结构及组成。一些算法必须要让子类来实现的话就写成抽象方法，一些算法可以让子类实现的话就写成钩子方法，以便让子类能够适当的影响模板类。
 */
public abstract class ResumeTemplate {
    protected final String mName;
    protected final String mIntro;

    ResumeTemplate(String name, String intro) {
        this.mName = name;
        this.mIntro = intro;
    }

    protected void fillInName() {
        System.out.println("我的名字是" + mName);
    }

    public final void checkByHR() {
        fillInName();
        if (containtsWorkExperience()) {
            fillInWorkExperience();
        }
        fillInIntroduction();
    }

    protected abstract void fillInIntroduction();

    protected void fillInWorkExperience() {
        System.out.println("我的工作经验如下：");
    }

    protected boolean containtsWorkExperience() {
        return false;
    }
}
